Forward Error Correction (FEC) is a method of encoding and decoding information for transmission over a noisy communication channel. Various implementations of FEC, such as Low-Density Parity-Check and Turbo codes, are known.
Low-Density Parity-Check (LDPC) decoder systems are current generation iterative soft-input FEC decoder systems that have found increasing popularity in FEC applications where low error floor and high performance are desired. LDPC codes are defined in terms of a two-dimensional parity-check matrix, referred to as an H matrix, that represents a set of parity check equations such that cH=0 where c is a codeword of the LDPC code.
An H matrix is a low-density matrix that can be represented by a sparse bipartite graph, known as a Tanner graph. A Tanner graph includes check nodes and variable nodes (otherwise known as bit nodes). For LDPC codes, the check nodes denote rows of the H matrix and the variable nodes represent the columns of the H matrix. An edge of the Tanner graph connects a check node to a variable node if a nonzero entry (i.e., a one) exists in the intersection of the corresponding row and column of the H matrix.
Decoding an LDPC codeword requires solving a set of parity check equations according to the H matrix. A commonly used decoding method is based on a two-step iterative process that uses soft decisions and is based on a belief propagation method. The process starts by determining soft-values of a LDPC codeword and loading those soft-values, such as log-likelihood ratios (LLRs) of the LDPC codeword, into the variable nodes. In the first half-iteration, each check node takes the output of the connected neighboring variable nodes and calculates a soft value. In the second-half iteration, the soft value at each variable node is updated by combining the soft value at the particular variable node (the variable node information) with the soft values output by the connected neighboring check nodes (the extrinsic information) for use in the subsequent iteration.
A common approach for calculating the soft value output by each check node is the min-sum method, or min-sum algorithm. In the min-sum method, the magnitude of the soft value of each check node is calculated by determining the minimum magnitude of all of the outputs of the connected neighboring variable nodes and the sign of the soft value output by each check node is calculated as the one bit binary multiplication of the signs of the output of the connected neighboring variable nodes.
Soft-decoding a LDPC codeword causes convergence of the solved LDPC codeword with the true LDPC codeword for most communication channels. Convergence is achieved over a number of iterations of the two-step iterative process described above and results in a corrected LDPC codeword without errors.
A category of LDPC codes, known as quasi-cyclic (QC) codes, generates an H matrix with features that improve the ease of implementing an LDPC encoder and decoder. In particular, it is possible to generate a QC-LDPC H matrix where some rows are orthogonal to each other. The orthogonal rows are treated as a layer, and the orthogonal rows within a layer can be processed in parallel (hereinafter referred to as layer processing), thus reducing the iterative cost of the decoder.
Improvements to LDPC and FEC decoder systems that improve the performance, such as decoding time or decoding accuracy, or both, of the LDPC or FEC decoder system are therefore desirable.